/*
 * 작성자 : Jint
 * 작성일 : 140423
 * 내용 : HashMap을 이용한 데이터관리 예제.
 * 		 Main에서 매개변수로 넘겨받은 HashMap<String, MapData> 를 사용하기 위해 필드에 HashMap<String, MapData> ihm; 을 선언. (input의 hashmap 이라서 ihm이라 명명)
 * 		 이곳에서는 3개의 텍스트필드를 만들어 ID,NAME,PHONE 세가지의 변수를 MapData에 저장하고. 이 저장된 MapData를 HashMap에 Value 값으로 넘겨준다.
 * 		 
 * 		 각각의 칸에서 칸이름.getText()를 받아와  MapData md = new MapData(inId.getText(), inName.getText(), inPhone.getText()); 로 저장하고
 * 		 이를 ihm.put(inId.getText(), md); 로 저장한다.
 * 
 * 		 현재 Main 에서 생성된 HashMap을 input, update, list 에서 모두 공유하고 있기 때문에(hashmap의 주소값을 모두 참조함) 
 * 		 세 창에서 실시간으로 이 데이터를 접근 할 수 있다.
 */

package collection;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class MapInput extends JInternalFrame {
	private JLabel lblId;
	private JLabel lblName;
	private JLabel lblPhoe;
	private JTextField inID;
	private JTextField inName;
	private JTextField inPhone;
	private JButton btnIn;
	private JTextField result;
	private JLabel lblStatus;

	HashMap<String, MapData> ihm;
	
	public MapInput(HashMap<String, MapData> a) {
		super("Input", true, true, true, true);
		
		this.ihm=a;
		
		setTitle("Input");
		getContentPane().setBackground(Color.PINK);
		setBounds(100, 100, 360, 139);
		getContentPane().setLayout(null);
		getContentPane().add(getLblId());
		getContentPane().add(getLblName());
		getContentPane().add(getLblPhoe());
		getContentPane().add(getLabel_1());
		getContentPane().add(getInID());
		getContentPane().add(getInName());
		getContentPane().add(getInPhone());
		getContentPane().add(getResult());
		getContentPane().add(getBtnIn());

	}

	private JLabel getLblId() {
		if (lblId == null) {
			lblId = new JLabel("ID");
			lblId.setHorizontalAlignment(SwingConstants.RIGHT);
			lblId.setBounds(12, 10, 57, 15);
		}
		return lblId;
	}
	private JLabel getLblName() {
		if (lblName == null) {
			lblName = new JLabel("Name");
			lblName.setHorizontalAlignment(SwingConstants.RIGHT);
			lblName.setBounds(12, 35, 57, 15);
		}
		return lblName;
	}
	private JLabel getLblPhoe() {
		if (lblPhoe == null) {
			lblPhoe = new JLabel("Phone");
			lblPhoe.setHorizontalAlignment(SwingConstants.RIGHT);
			lblPhoe.setBounds(12, 60, 57, 15);
		}
		return lblPhoe;
	}
	private JTextField getInID() {
		if (inID == null) {
			inID = new JTextField();
			inID.setBounds(81, 7, 116, 21);
			inID.setColumns(10);
		}
		return inID;
	}
	private JTextField getInName() {
		if (inName == null) {
			inName = new JTextField();
			inName.setColumns(10);
			inName.setBounds(81, 32, 116, 21);
		}
		return inName;
	}
	private JTextField getInPhone() {
		if (inPhone == null) {
			inPhone = new JTextField();
			inPhone.setColumns(10);
			inPhone.setBounds(81, 57, 116, 21);
		}
		return inPhone;
	}
	private JButton getBtnIn() {
		if (btnIn == null) {
			btnIn = new JButton("Input");
			btnIn.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					
					if(inID.getText().equals("") || inName.getText().equals("") || inPhone.getText().equals("")){
						JOptionPane.showMessageDialog(null, "공백을 다 채워주세요.");						
						return;
					}
					
					
					MapData md = new MapData(inID.getText(), inName.getText(), inPhone.getText());
					ihm.put(inID.getText(), md);
					inID.setText("");
					inName.setText("");
					inPhone.setText("");
					
					result.setText("저장되었습니다.");
										
				}
			});
			btnIn.setBounds(209, 6, 97, 97);
		}
		return btnIn;
	}
	private JTextField getResult() {
		if (result == null) {
			result = new JTextField();
			result.setBounds(81, 82, 116, 21);
			result.setColumns(10);
		}
		return result;
	}
	private JLabel getLabel_1() {
		if (lblStatus == null) {
			lblStatus = new JLabel("Status");
			lblStatus.setHorizontalAlignment(SwingConstants.RIGHT);
			lblStatus.setBounds(12, 85, 57, 15);
		}
		return lblStatus;
	}
}
